package com.powernode.ssm.service;

import com.powernode.ssm.pojo.po.UserLoginToken;
import com.powernode.ssm.pojo.vo.TokenInfo;

import java.time.LocalDateTime;
import java.util.Optional;

public interface UserLoginTokenService {
    /**
     * 保存或更新用户的 token 信息
     */
    void saveOrUpdateToken(String userId, String token, LocalDateTime expireTime);

    /**
     * 根据用户ID查询 Token 信息
     */
    Optional<UserLoginToken> getTokenByUserId(String userId);

    /**
     * 删除用户的 token（登出时调用）
     */
    void deleteTokenByUserId(String userId);

    /**
     * 根据用户ID查询已存在的 token 以及过期时间
     * @param userId 用户ID
     * @return 包含 token 和 expireTime 的 TokenInfo 对象，如果不存在或已过期则返回 null
     */
    TokenInfo getTokenIfExists(String userId);

    /**
     * 更新指定用户的 token 过期时间
     * @param userId 用户ID
     * @param newExpireTime 新的过期时间
     */
    void updateTokenExpireTime(String userId, LocalDateTime newExpireTime);
}